using namespace std;

class Param{

public:
////////////////////////////////////////////////////////////////////////////PARAMETERS////////////////////////////////////////////////////////////////////////////
    //k-mer size range
    short unsigned int k_min;
    short unsigned int k_max;

    //read size
    unsigned int r;

    int num_reference_sp;                            //number of reference species
    char * reference_set;                           //reference set created
    int num_files_reference;                        //number of files in the reference set

    char ** taxa;                                   //decryption table for code representation of genus/species

    //read files
    int num_read_files;                     //number of files that include reads
    char * file_of_files_reads;             //if multiple files, a file that lists all of the files

    //output_file_tag
    char * output_file_tag;                 //several files will be written... all will begin with this tag indicating this read set's analysis

    //advanced parameters
    short unsigned int kum_size;             //number of clusters
    short unsigned int gc_dim1;             //GC content to create dimension 1
    short unsigned int gc_dim2;             //GC content to create dimension 2
    char * gc_dim1_file;                    //GC content dimension 1 file name
    char * gc_dim2_file;                    //GC content dimension 2 file name

////////////////////////////////////////////////////////////////////////////PARAMETERS////////////////////////////////////////////////////////////////////////////

    Param(int i);   //used for testing
    Param();
    ~Param();
    bool get_user_parameters();
    bool get_advanced_parameters();
    bool create_new_reference_set();
    bool get_reference_set();
    bool confirm_parameters();
    bool lookup(unsigned short code, char *& name);
    bool load_taxa();

private:
    bool adv;       //true if using default advanced parameters
};
